package com.compress.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * <p>说明：匹配html内的元素或属性值</p>
 */
public class HtmlUtil {
    /** 
     * 获取指定HTML标签的指定属性的值 
     * @param source 要匹配的源文本 
     * @param element 标签名称 
     * @param attr 标签的属性名称 
     * @return 属性值列表 
     */  
    public static List<String> matchAll(String source, String element, String attr) {  
        List<String> result = new ArrayList<String>();  
        String reg = "<" + element + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?(\\s.*?)?(/)?>";  
        Matcher m = Pattern.compile(reg).matcher(source);  
        while (m.find()) {  
            String r = m.group(1);  
            result.add(r);  
        }  
        return result;  
    }  
    //只匹配一个结果
    public static String matchOne(String source, String element, String attr) {  
        String reg = "<" + element + "[^<>]*?\\s" + attr + "=['\"]?(.*?)['\"]?(\\s.*?)?(/)?>";  
        Matcher m = Pattern.compile(reg).matcher(source);  
        if (m.find()) {  
            String r = m.group(1);  
            return r;
        }  
        return null;  
    }  
    public static void main(String[] args) {
        String str = "<p style=\"text-indent:21.0pt;background:white;\">"+
    "1、用人单位招收录用其所支付的费用；</p><p style=\"text-indent:21.0pt;background:white;\"><img src='http://127.0.0.1:800/ab/cc/aaa.img'/>"
    + "  2、用人单位为其支付的培训费用，双方另有约定的按约定办理；</p><p style=\"text-indent:21.0pt;background:white;\">"
    + "    3、对生产、经营和工作造成的直接经济损失；</p><p style=\"text-indent:21.0pt;background:white;\">  <img src='http://127.0.0.1:8080/ab/cc/aaa.img'/>  4、劳动合同约定的其他赔偿费用。"
    + "</p><p style=\"text-indent:21.0pt;background:white;\">";
        
        List<String> matchAll = matchAll(str, "img", "src");
        System.out.println(str);
     //   String one = matchOne(str, "img", "src");
        System.out.println(matchAll);
        
    }
}
